#pragma once 

class FBO
{
public:
    FBO();
    void bind();
    void unbind();
private:
    GLuint fboHandle;
};

class FBO_RB : public FBO
{
public:
    FBO_RB() {};
    FBO_RB(glm::dvec2 dim, GLenum colorFormat);
    glm::vec4 sample(glm::dvec2 pos);
private:
    GLuint rbColorHandle;
    GLuint rbDepthHandle;
};

class FBO_Tex : public FBO 
{
public:
    FBO_Tex();
    void attach(GLuint tex_id, GLenum attPoint);
    glm::vec4 sample(glm::dvec2 pos);
private:
};